home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / arch / x86 / include / asm / summit / mpparse.h < prev   
Encoding:
C/C++ Source or Header  |  2008-12-24  |  5.1 KB  |  110 lines

  1. #ifndef __ASM_SUMMIT_MPPARSE_H
  2. #define __ASM_SUMMIT_MPPARSE_H
  3.  
  4. #include <asm/tsc.h>
  5.  
  6. extern int use_cyclone;
  7.  
  8. #ifdef CONFIG_X86_SUMMIT_NUMA
  9. extern void setup_summit(void);
  10. #else
  11. #define setup_summit()    {}
  12. #endif
  13.  
  14. static inline int mps_oem_check(struct mp_config_table *mpc, char *oem,
  15.         char *productid)
  16. {
  17.     if (!strncmp(oem, "IBM ENSW", 8) &&
  18.             (!strncmp(productid, "VIGIL SMP", 9)
  19.              || !strncmp(productid, "EXA", 3)
  20.              || !strncmp(productid, "RUTHLESS SMP", 12))){
  21.         mark_tsc_unstable("Summit based system");
  22.         use_cyclone = 1; /*enable cyclone-timer*/
  23.         setup_summit();
  24.         return 1;
  25.     }
  26.     return 0;
  27. }
  28.  
  29. /* Hook from generic ACPI tables.c */
  30. static inline int acpi_madt_oem_check(char *oem_id, char *oem_table_id)
  31. {
  32.     if (!strncmp(oem_id, "IBM", 3) &&
  33.         (!strncmp(oem_table_id, "SERVIGIL", 8)
  34.          || !strncmp(oem_table_id, "EXA", 3))){
  35.         mark_tsc_unstable("Summit based system");
  36.         use_cyclone = 1; /*enable cyclone-timer*/
  37.         setup_summit();
  38.         return 1;
  39.     }
  40.     return 0;
  41. }
  42.  
  43. struct rio_table_hdr {
  44.     unsigned char version;      /* Version number of this data structure           */
  45.                                 /* Version 3 adds chassis_num & WP_index           */
  46.     unsigned char num_scal_dev; /* # of Scalability devices (Twisters for Vigil)   */
  47.     unsigned char num_rio_dev;  /* # of RIO I/O devices (Cyclones and Winnipegs)   */
  48. } __attribute__((packed));
  49.  
  50. struct scal_detail {
  51.     unsigned char node_id;      /* Scalability Node ID                             */
  52.     unsigned long CBAR;         /* Address of 1MB register space                   */
  53.     unsigned char port0node;    /* Node ID port connected to: 0xFF=None            */
  54.     unsigned char port0port;    /* Port num port connected to: 0,1,2, or 0xFF=None */
  55.     unsigned char port1node;    /* Node ID port connected to: 0xFF = None          */
  56.     unsigned char port1port;    /* Port num port connected to: 0,1,2, or 0xFF=None */
  57.     unsigned char port2node;    /* Node ID port connected to: 0xFF = None          */
  58.     unsigned char port2port;    /* Port num port connected to: 0,1,2, or 0xFF=None */
  59.     unsigned char chassis_num;  /* 1 based Chassis number (1 = boot node)          */
  60. } __attribute__((packed));
  61.  
  62. struct rio_detail {
  63.     unsigned char node_id;      /* RIO Node ID                                     */
  64.     unsigned long BBAR;         /* Address of 1MB register space                   */
  65.     unsigned char type;         /* Type of device                                  */
  66.     unsigned char owner_id;     /* For WPEG: Node ID of Cyclone that owns this WPEG*/
  67.                                 /* For CYC:  Node ID of Twister that owns this CYC */
  68.     unsigned char port0node;    /* Node ID port connected to: 0xFF=None            */
  69.     unsigned char port0port;    /* Port num port connected to: 0,1,2, or 0xFF=None */
  70.     unsigned char port1node;    /* Node ID port connected to: 0xFF=None            */
  71.     unsigned char port1port;    /* Port num port connected to: 0,1,2, or 0xFF=None */
  72.     unsigned char first_slot;   /* For WPEG: Lowest slot number below this WPEG    */
  73.                                 /* For CYC:  0                                     */
  74.     unsigned char status;       /* For WPEG: Bit 0 = 1 : the XAPIC is used         */
  75.                                 /*                 = 0 : the XAPIC is not used, ie:*/
  76.                                 /*                     ints fwded to another XAPIC */
  77.                                 /*           Bits1:7 Reserved                      */
  78.                                 /* For CYC:  Bits0:7 Reserved                      */
  79.     unsigned char WP_index;     /* For WPEG: WPEG instance index - lower ones have */
  80.                                 /*           lower slot numbers/PCI bus numbers    */
  81.                                 /* For CYC:  No meaning                            */
  82.     unsigned char chassis_num;  /* 1 based Chassis number                          */
  83.                                 /* For LookOut WPEGs this field indicates the      */
  84.                                 /* Expansion Chassis #, enumerated from Boot       */
  85.                                 /* Node WPEG external port, then Boot Node CYC     */
  86.                                 /* external port, then Next Vigil chassis WPEG     */
  87.                                 /* external port, etc.                             */
  88.                                 /* Shared Lookouts have only 1 chassis number (the */
  89.                                 /* first one assigned)                             */
  90. } __attribute__((packed));
  91.  
  92.  
  93. typedef enum {
  94.     CompatTwister = 0,  /* Compatibility Twister               */
  95.     AltTwister    = 1,  /* Alternate Twister of internal 8-way */
  96.     CompatCyclone = 2,  /* Compatibility Cyclone               */
  97.     AltCyclone    = 3,  /* Alternate Cyclone of internal 8-way */
  98.     CompatWPEG    = 4,  /* Compatibility WPEG                  */
  99.     AltWPEG       = 5,  /* Second Planar WPEG                  */
  100.     LookOutAWPEG  = 6,  /* LookOut WPEG                        */
  101.     LookOutBWPEG  = 7,  /* LookOut WPEG                        */
  102. } node_type;
  103.  
  104. static inline int is_WPEG(struct rio_detail *rio){
  105.     return (rio->type == CompatWPEG || rio->type == AltWPEG ||
  106.         rio->type == LookOutAWPEG || rio->type == LookOutBWPEG);
  107. }
  108.  
  109. #endif /* __ASM_SUMMIT_MPPARSE_H */
  110.